package main

import (
	"bufio"
	"fmt"
	"os"
	"time"
)

//从键盘接收用户输入的身份证号码  以4开头18位数字  判断输入合法
//434314200208289999  获取身份证上的出生年月日，判断是否大这个人于18岁
//大于18岁提示“录用”，否则提示"劝退"

func main() {
	reader := bufio.NewReader(os.Stdin)
	fmt.Print("请输入一个身份证号码: ")
	numbers, _ := reader.ReadString('\n')
	length := len(numbers) - 2

	if (numbers[0] != '4') || (length != 18) {
		fmt.Println("身份证输入不合法！")
	} else {
		numbers = numbers[6:14]
		fmt.Println(numbers)

		today := "20240329" //以今天为时间基准
		// 解析日期字符串为time.Time对象
		t1, err := time.Parse("20060102", numbers) //第一个参数是格式字符串,第二个参数是要解析的时间日期字符串
		if err != nil {
			fmt.Println("解析日期1失败:", err)
			return
		}
		t2, err := time.Parse("20060102", today)
		if err != nil {
			fmt.Println("解析日期2失败:", err)
			return
		}

		// 使用Sub方法计算两个时间点的差值
		duration := t2.Sub(t1)

		// 将time.Duration转换为天数
		days := int(duration.Hours() / 24)
		fmt.Printf("两个日期之间相差 %d 天\n", days)
		years := float64(days) / float64(365)
		fmt.Printf("两个日期之间相差 %f 年\n", years)

		if years > 18.0 {
			fmt.Println("录用")
		} else {
			fmt.Println("劝退")
		}
	}

}
